<?php
/**
 *  Mi Framework
 *
 *  Copyright(c) 2015 by zengjian. All rights reserved
 *
 *  To contact the author write to {@link mailto:ustb80@163.com}
 *
 * @author zengjian
 * @version $Id: Input.class.php,v 1.0 2015-3-17
 * @package package
 */
// ------------------------------------------------------------------------

class Input
{

    /**
     * 取得所有的get参数
     *
     * @return array
     */
    public static function get($key = '')
    {
        if ($key === '')
        {
            return $_GET;
        }
        elseif (isset($_GET[$key]))
        {
            return $_GET[$key];
        }
    }

    /**
     * 取得所有的post参数
     *
     * @return array
     */
    public static function post($key = '')
    {
        if ($key === '')
        {
            return $_POST;
        }
        elseif (isset($_POST[$key]))
        {
            return $_POST[$key];
        }
    }

    /**
     * 所得所有的提交参数
     *
     * @return array
     */
    public static function request($key = '')
    {
        if ($key === '')
        {
            return $_REQUEST;
        }
        else if(isset($_REQUEST[$key]))
        {
            return $_REQUEST[$key];
        }
    }

    /**
     * 取得输入类型
     *
     * @return Ambigous <string, unknown>
     */
    public static function getMethod()
    {
        return isset($_SERVER['REQUEST_METHOD']) ? strtolower($_SERVER['REQUEST_METHOD']) : '';
    }

    /**
     * 取得get到的字符串
     *
     * @param string $key
     * @param string $default
     * @return multitype:|string
     */
    public static function getString($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::get();
        }
        else
        {
            if (isset($_GET[$key]))
            {
                return ($_GET[$key] === '' && $default !== null) ? $default : (string) rtrim($_GET[$key]);
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得get到的字符串，去前后空格
     *
     * @param string $key
     * @param string $default
     * @return multitype:|string
     */
    public static function getTrimString($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::get();
        }
        else
        {
            if (isset($_GET[$key]))
            {
                return ($_GET[$key] === '' && $default !== null) ? $default : (string) trim($_GET[$key]);
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得post到的字符串
     *
     * @param string $key
     * @param string $default
     * @return multitype:|string
     */
    public static function postString($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::post();
        }
        else
        {
            if (isset($_POST[$key]))
            {
                return ($_POST[$key] === '' && $default !== null) ? $default : (string)rtrim($_POST[$key]);
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得post到的字符串，去前后空格
     *
     * @param string $key
     * @param string $default
     * @return multitype:|string
     */
    public static function postTrimString($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::post();
        }
        else
        {
            if (isset($_POST[$key]))
            {
                return ($_POST[$key] === '' && $default !== null) ? $default : (string)trim($_POST[$key]);
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得get到的int
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function getInt($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::get();
        }
        else
        {
            if (isset($_GET[$key]))
            {
                return (int) $_GET[$key];
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得get到的int
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function getNumber($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::get();
        }
        else
        {
            if (isset($_GET[$key]))
            {
                if (is_numeric($_GET[$key]))
                {
                    return $_GET[$key];
                }
                else
                {
                    return 0;
                }
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得post到的int
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function postInt($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::post();
        }
        else
        {
            if (isset($_POST[$key]))
            {
                return (int) $_POST[$key];
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得get到的float
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function getFloat($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::get();
        }
        else
        {
            if (isset($_GET[$key]))
            {
                return (float) $_GET[$key];
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得post到的float
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function postFloat($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::post();
        }
        else
        {
            if (isset($_POST[$key]))
            {
                return (float) $_POST[$key];
            }
            else
            {
                return $default;
            }
        }
    }

    /**
     * 取得post到的数字
     *
     * @param string $key
     * @param string $default
     * @return multitype:|number|string
     */
    public static function postNumber($key = null, $default = null)
    {
        if (!isset($key))
        {
            return self::post();
        }
        else
        {
            if (isset($_POST[$key]))
            {
                if (is_numeric($_POST[$key]))
                {
                    return $_POST[$key];
                }
                else
                {
                    return 0;
                }
            }
            else
            {
                return $default;
            }
        }
    }
}
